package com.thread.sync.sync02;


public class SynchException {
    public int i = 0;

    public synchronized void operation() {
        while (true) {
            try {
                i++;
                Thread.sleep(1000);
                System.out.println(Thread.currentThread().getName() + " , i = " + i);
                if (i == 10) {
                    Integer.parseInt("a");//会抛出异常
                }
                /**
                 * 两种情况:一 :抛出异常之后对后续数据没有影响.,希望程序正常执行,则使用Exception捕获,并记录日志问题数据,
                 *          或者在catch中使用continue;,跳过这次循环继续执行
                 *       二  :抛出异常之后,后续数据可能都会出现问题,希望程序终止,则使用InterruptedException,打断异常,
                 *          或者抛出运行时异常,终止程序throw new RuntimeException();
                 */
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("log info , i = " + i);
                //throw new RuntimeException();
                //continue;
            }
        }
    }

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                new SynchException().operation();
            }
        }).start();
    }
}
